package top.jnaw.jee.utils.auth;

import com.alibaba.fastjson.JSONObject;
import com.jfinal.core.Controller;
import com.jfinal.kit.StrKit;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;

/**
 * Created by lc on 17-6-1.
 */
public class AuthUtil {

  protected static final String SESSION_INFO = "auth.info";

  /**
   * 简单的加密 Base64(MD5(text))
   *
   * @param text 原文
   * @return 密文
   */
  public static String encrypt(String text) {
    String result = null;

    if (StrKit.isBlank(text)) {
      return result;
    }

    try {
      MessageDigest digest = MessageDigest.getInstance("MD5");
      result = Base64.getEncoder()
          .encodeToString(digest.digest(text.getBytes()));
    } catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
    }

    return result;
  }

  /**
   * 通过 code 获取用户信息
   *
   * @param controller 当前的控制器，用来读写会话
   * @param code 平台提供的 code 字符串
   * @param channel 平台渠道类型
   * @return 用户信息对象
   */
  public static JSONObject byCode(Controller controller, String code,
      CHANNEL channel) {
    JSONObject result = new JSONObject();

    switch (channel) {
      case Wechat:
        result = WechatAuth.byCode(controller, code);
        break;

      case Upesn:
        result = UpesnAuth.byCode(controller, code);
        break;

      default:
        result.put("failed", "not supported channel");
        break;
    }

    return result;
  }

  /**
   * 平台渠道类型
   */
  public enum CHANNEL {
    Wechat, Upesn, DingDing
  }

}
